openapi: 3.1.0
info:
  title: Open API
  description: >-
    The MoreLogin Open API provides a powerful, remote RESTful interface
    exclusively for managing **Cloud Phones** at scale. This cloud-hosted API
    empowers developers to programmatically create phone instances, install
    apps, manage files, and orchestrate RPA schedules from anywhere, without
    needing a local client running.
  version: 1.0.0
tags:
  - name: Authorization
  - name: Cloud Phone Management
  - name: ADB
  - name: Files
  - name: Apps
  - name: Schedules
  - name: Touch
x-tagGroups:
  - name: ''
    tags:
      - Authorization
      - Cloud Phone Management
      - ADB
      - Files
      - Apps
      - Schedules
      - Touch
paths:
  /oauth2/token:
    post:
      summary: Access Token
      deprecated: false
      description: ''
      tags:
        - Authorization
      parameters:
        - name: Content-Type
          in: header
          required: true
          example: application/json
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                client_id:
                  description: A API ID identifies an member
                  type: string
                client_secret:
                  description: >
                    A API Key authenticates a client ID. To call MoreLogin APIs,
                    you'll

                    exchange your API ID and API Key for an access token. Keep
                    this

                    secret safe.
                  type: string
                grant_type:
                  description: Package name — required only if appVersionId is not provided
                  type: string
                  example: client_credentials
              required:
                - client_id
                - client_secret
                - grant_type
            example:
              client_id: 1672940217990530
              client_secret: client_secret
              grant_type: client_credentials
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: object
                    properties:
                      scope:
                        type: string
                      access_token:
                        type: string
                      token_type:
                        type: string
                      expires_in:
                        type: integer
                      client_metadata:
                        type: object
                        properties:
                          name:
                            type: string
                        required:
                          - name
                        x-apidog-orders:
                          - name
                        x-apidog-ignore-properties: []
                    required:
                      - scope
                      - access_token
                      - token_type
                      - expires_in
                      - client_metadata
                    x-apidog-orders:
                      - scope
                      - access_token
                      - token_type
                      - expires_in
                      - client_metadata
                    x-apidog-ignore-properties: []
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
                x-apidog-orders:
                  - code
                  - msg
                  - data
                  - requestId
                x-apidog-ignore-properties: []
              example:
                code: 0
                msg: null
                data:
                  scope: cloudphone
                  access_token: >
                    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxNjU4MjYwNzYyNjA3OTU2IiwibmFtZSI6InpodXp1YmluNTU155qE5Zui6ZifIiwiZXhwIjoxNzY2ODkxNDY4LCJpYXQiOjE3NjY4ODc4Njh9.CJ_h-EQTG440qL-zSPcAockuw9PmBfyllyGZd0cmF0Q
                  token_type: Bearer
                  expires_in: 3600
                  client_metadata:
                    name: team name
                requestId: 1d4f3ea968664593860b94b35d4ebf5e
          headers: {}
          x-apidog-name: 成功
          x-apidog-ordering: 0
      security: []
  /oauth2/userinfo:
    get:
      summary: Get Current User Profile
      deprecated: false
      description: ''
      tags:
        - Authorization
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: object
                    properties:
                      teamId:
                        type: string
                      teamName:
                        type: string
                      memberId:
                        type: string
                      memberNickName:
                        type: string
                      memberEmail:
                        type: string
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
              example:
                code: 0
                msg: null
                data:
                  scope: cloudphone
                  access_token: >
                    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxNjU4MjYwNzYyNjA3OTU2IiwibmFtZSI6InpodXp1YmluNTU155qE5Zui6ZifIiwiZXhwIjoxNzY2ODkxNDY4LCJpYXQiOjE3NjY4ODc4Njh9.CJ_h-EQTG440qL-zSPcAockuw9PmBfyllyGZd0cmF0Q
                  token_type: Bearer
                  expires_in: 3600
                  client_metadata:
                    name: team name
                requestId: 1d4f3ea968664593860b94b35d4ebf5e
          headers: {}
  /cloudphone/uploadUrl:
    post:
      summary: Request File Upload URL
      deprecated: false
      description: >-
        Upload temporary files through this interface, and the system will
        automatically delete them after 7 days
      operationId: get
      tags:
        - Files
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: Cloud phone ID
                fileName:
                  type: string
                  description: Upload file name
            example:
              fileName: example.jpg
              id: 0
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Return result code 0:Normal Other codes are exceptions.
                  msg:
                    type: string
                    description: |
                      error message
                  data:
                    type: object
                    properties:
                      presignedUrl:
                        type: string
                        description: >-
                          File upload URL use https PUT uploading files to cloud
                          storage
                    required:
                      - presignedUrl
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
          headers: {}
  /cloudphone/uploadFile:
    post:
      summary: Upload File
      deprecated: false
      description: ''
      operationId: fileUploadUsing
      tags:
        - Files
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  description: Cloud phone ID
                  type: string
                  example: '1661515884160372'
                url:
                  type: string
                  description: upload file url
                  example: https://example.com/test.jpg
                uploadDest:
                  description: Upload destination directory
                  type: string
                  example: /Download
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: object
                    properties:
                      fileId:
                        type: string
                        description: Uploaded file ID
                      id:
                        type: cloud phone ID
                      status:
                        type: integer
                        description: Upload status 0:uploading 1:success 2:failed
                    required:
                      - fileId
                      - id
                      - status
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
              example:
                code: 0
                msg: null
                data:
                  fileId: '1661515884160111'
                  id: 1661515884160372
                  status: 1
                requestId: 1d4f3ea968664593860b94b35d4ebf5e
          headers: {}
  /cloudphone/uploadFileResult:
    post:
      summary: Get File Upload Result
      deprecated: false
      description: ''
      operationId: fileUploadResult
      tags:
        - Files
      parameters: []
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                id:
                  description: Cloud phone ID
                  type: string
                  example: '1661515884160372'
                fileId:
                  type: string
                  description: Uploaded file ID
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: object
                    properties:
                      id:
                        type: cloud phone ID
                      fileId:
                        type: string
                        description: Uploaded file ID
                      status:
                        type: integer
                        description: Upload status 0:uploading 1:success 2:failed
                    required:
                      - fileId
                      - id
                      - status
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
              example:
                code: 0
                msg: null
                data:
                  id: 1661515884160372
                  fileId: '1661515884160111'
                  status: 1
                requestId: 1d4f3ea968664593860b94b35d4ebf5e
          headers: {}
  /cloudphone/download:
    post:
      summary: Request File Download URL
      deprecated: false
      description: ''
      tags:
        - Files
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: cloud phone id
                filePath:
                  type: string
                  description: |
                    file path: /sdcard/Download/a.txt
              required:
                - filePath
                - id
            example:
              filePath: ''
              id: 0
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Cloud phone id
                      downId:
                        type: integer
                        description: 'File download id '
                    required:
                      - id
                      - downId
                required:
                  - code
                  - msg
                  - data
              example:
                code: 0
                msg: ''
                data:
                  id: 0
                  downId: 0
          headers: {}
  /cloudphone/download/result:
    post:
      summary: Get File Download Result
      deprecated: false
      description: ''
      tags:
        - Files
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: cloud phone id
                downId:
                  type: integer
                  description: file download id
              required:
                - downId
                - id
            example:
              downId: 0
              id: 0
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: 'null'
                  data:
                    type: object
                    properties:
                      status:
                        type: integer
                        description: >-
                          Download file status;10:Running, 20:Successful,
                          30:Failed, 40:Cancelled
                      downUrl:
                        type: string
                        description: File download url
                    required:
                      - status
                      - downUrl
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
              example:
                code: 0
                msg: null
                data:
                  status: 20
                  downUrl: https://get.morelogin.com/...
                requestId: 17d9dbfd958e4f40a51897520138d3ff
          headers: {}
  /cloudphone/setKeyBox:
    post:
      summary: Configure Keybox
      deprecated: false
      description: ''
      tags:
        - Files
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                filePath:
                  type: string
                  description: File path, e.g., /sdcard/Download/xxx.xml
                id:
                  type: integer
                  description: Cloud phone ID
            example:
              filePath: ''
              id: 0
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 'Response code: 0 = success, >0 = error'
                  msg:
                    type: string
                  data:
                    type: boolean
          headers: {}
  /cloudphone/app/install:
    post:
      summary: Install App on Cloud Phone
      deprecated: false
      description: ''
      tags:
        - Apps
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                appVersionId:
                  description: App version ID
                  type: string
                id:
                  description: Cloud phone ID
                  type: integer
                packageName:
                  description: Package name — required only if appVersionId is not provided
                  type: string
                versionCode:
                  description: Version code — required only if appVersionId is not provided
                  type: integer
              required:
                - id
            example:
              appVersionId: '1672940217990530'
              id: 1673823102599682
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: boolean
                  requestId:
                    type: string
          headers: {}
  /cloudphone/app/page:
    post:
      summary: List Available Apps
      deprecated: false
      description: Fetch the list of team applications
      tags:
        - Apps
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                appName:
                  description: App name (partial match)
                  type: string
                pageNum:
                  description: Page number; Default:1
                  type: integer
                pageSize:
                  description: Items per page; Default:10
                  type: integer
            example:
              appName: de
              pageNum: 1
              pageSize: 10
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: object
                    properties:
                      total:
                        type: string
                      current:
                        type: string
                      pages:
                        type: string
                      dataList:
                        type: array
                        items:
                          type: object
                          properties: {}
                  requestId:
                    type: string
          headers: {}
  /cloudphone/team/app/page:
    post:
      summary: List Team Apps
      deprecated: false
      description: Fetch the list of team applications
      tags:
        - Apps
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                appName:
                  description: App name (partial match)
                  type: string
                packageNames:
                  type: array
                  items:
                    type: string
                  description: List of application package names
                  example:
                    - com.facebook.katana
                pageNum:
                  description: Page number; Default:1
                  type: integer
                pageSize:
                  description: Items per page; Default:10
                  type: integer
            example:
              appName: TikTok
              pageNum: 1
              pageSize: 10
      responses:
        '200':
          description: ''
          content:
            application/json:
              $ref: '#/components/schemas/ResponseDataPageResultCloudPhoneAppDto'
          headers: {}
  /cloudphone/app/installedList:
    post:
      summary: List Installed Apps
      deprecated: false
      description: Query list of installed apps on a cloud phone
      tags:
        - Apps
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  description: Cloud phone ID
                  type: integer
              required:
                - id
            example:
              id: 1674550360293464
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        appName:
                          type: string
                        appIcon:
                          type: string
                        packageName:
                          type: string
                        versionCode:
                          type: string
                        versionName:
                          type: string
                  requestId:
                    type: string
          headers: {}
  /cloudphone/app/start:
    post:
      summary: Launch App
      deprecated: false
      description: Launch an installed app on the cloud phone
      tags:
        - Apps
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  description: Cloud phone ID
                  type: integer
                packageName:
                  description: App package name
                  type: string
              required:
                - id
                - packageName
            example:
              id: 1674550360293464
              packageName: com.depop
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: 'null'
                  requestId:
                    type: string
          headers: {}
  /cloudphone/app/restart:
    post:
      summary: Restart App
      deprecated: false
      description: ''
      tags:
        - Apps
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: Cloud phone ID
                packageName:
                  type: string
                  description: App package name
            example:
              id: 0
              packageName: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code:0 = success, >0 = error
                  msg:
                    type: string
                    description: Response msg, Error message returned if code > 0
                  data:
                    type: boolean
                required:
                  - msg
          headers: {}
  /cloudphone/app/stop:
    post:
      summary: Stop App
      deprecated: false
      description: ''
      tags:
        - Apps
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: Cloud phone ID
                packageName:
                  type: string
                  description: App package name
            example:
              id: 0
              packageName: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 'Response code: 0 = success, >0 = error'
                  data:
                    type: boolean
                  msg:
                    type: string
                    description: Message; populated if code > 0
          headers: {}
  /cloudphone/app/uninstall:
    post:
      summary: Uninstall App
      deprecated: false
      description: ''
      tags:
        - Apps
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: Cloud phone ID
                packageName:
                  type: string
                  description: App package name
            example:
              id: 0
              packageName: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 'Response code: 0 = success, >0 = error'
                  data:
                    type: boolean
                  msg:
                    type: string
                    description: Message; populated if code > 0
          headers: {}
  /cloudphone/app/openRoot:
    post:
      tags:
        - Apps
      summary: Enable app ROOT
      description: >-
        Enable ROOT permission for a specific app package on a single cloud
        phone.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiAppRootOperateDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 'Response code: 0 = success, >0 = error'
                  data:
                    type: object
                    description: Empty response data
                    example: {}
                  msg:
                    type: string
                    description: Message; populated if code > 0
  /cloudphone/app/setHideAccessibilityApp:
    post:
      summary: Configure App Accessibility Hiding
      deprecated: false
      description: Supports only Android 13,Android 14 and Android15A
      tags:
        - Apps
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ids:
                  type: array
                  items:
                    type: integer
                    format: int64
                  description: Cloud phone IDs
                packageName:
                  type: array
                  items:
                    type: string
                  description: >-
                    App package name, An empty string is equivalent to clearing,
                    while * or ALL hides all applications.
            example:
              ids:
                - 0
              packageName:
                - '*'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 'Response code: 0 = success, >0 = error'
                  data:
                    type: boolean
                  msg:
                    type: string
                    description: Message; populated if code > 0
          headers: {}
  /cloudphone/page:
    post:
      summary: List Cloud Phone Profiles
      operationId: pageUsingPOST
      tags:
        - Cloud Phone Management
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                bindIp:
                  type: boolean
                  description: 'Whether IP is bound: true = bound, false = not'
                  example: false
                keyword:
                  type: string
                  description: >-
                    Keyword to filter: proxy info, group name, tag name,
                    environment name
                  example: CP-424
                pageNo:
                  type: integer
                  format: int64
                  description: Current page
                  example: 1
                pageSize:
                  type: integer
                  format: int64
                  description: Items per page
                  example: 100
                sort:
                  type: array
                  description: >-
                    Dynamic sort fields. Currently only "envName" is supported
                    for cloud phones.
                  items:
                    type: object
                    properties:
                      sortDirection:
                        type: string
                        enum:
                          - asc
                          - desc
                        description: Sort direction
                        example: asc
                      sortField:
                        type: string
                        description: >-
                          Field to sort by (only "envName" is currently
                          supported)
                        example: envName
                    required:
                      - sortDirection
                      - sortField
                  example:
                    - sortDirection: asc
                      sortField: envName
              example:
                bindIp: false
                keyword: CP-424
                pageNo: 1
                pageSize: 100
                sort:
                  - sortDirection: asc
                    sortField: envName
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Return result code 0:Normal Other codes are exceptions.
                  msg:
                    type: string
                    description: error message
                  data:
                    type: object
                    properties:
                      current:
                        type: integer
                      dataList:
                        type: array
                        items:
                          $ref: '#/components/schemas/CloudPhoneProfile'
                      pages:
                        type: integer
                      total:
                        type: integer
                    required:
                      - current
                      - dataList
                      - pages
                      - total
                  requestId:
                    type: string
                    description: Operation Request ID
                required:
                  - code
                  - msg
                  - data
                  - requestId
  /cloudphone/create:
    post:
      summary: Create Cloud Phone
      operationId: createUsingPOST
      tags:
        - Cloud Phone Management
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                skuId:
                  type: string
                  description: >
                    Cloud Phone model

                    skuId:10002 model:Android 12

                    skuId:10013 model:Android 13

                    skuId:10005 model:Android 14

                    skuId:10004 model:Android 15

                    skuId:10014 model:Android 15A

                    skuId:10015 model:Android 16

                    See [Country Time Zone
                    Table](/api-reference/appendix/country-time-zone) for
                    supported regions and timezone mappings
                quantity:
                  type: integer
                  minimum: 1
                  maximum: 10
                  description: Number of cloud phone created. Range of values:[1-10]
                envRemark:
                  type: string
                  maxLength: 1500
                  description: Profile Remarks (Length limit 1500 characters)
                automaticGeo:
                  type: boolean
                  description: >-
                    Whether to automatically match the geographic location.
                    Default:true
                automaticLanguage:
                  type: boolean
                  description: Whether to automatically match the language. Default:true
                automaticLocation:
                  type: boolean
                  description: >-
                    Whether to auto-match location (time zone, country).
                    Default:true
                country:
                  type: string
                  description: >-
                    Country code (e.g. `us`). See [Country Time Zone
                    Table](/api-reference/appendix/country-time-zone) for the
                    full list
                timezone:
                  type: string
                  description: Time zone, e.g. America/New_York
                language:
                  type: string
                  description: Language, e.g. en-US
                altitude:
                  type: integer
                latitude:
                  type: number
                  description: Latitude. Example:22.309182
                longitude:
                  type: number
                  description: Longitude. Example:114.176817
                phoneNumber:
                  type: string
                  description: >-
                    Customize your phone number. Format requirements:Must begin
                    with a + sign, country code must be 1-3 digits (excluding
                    86), total length 8-14 digits, and contain only + and
                    numbers.
                brand:
                  type: string
                  description: >-
                    device brand,You can query via the
                    https://guide.morelogin.com/api-reference/open-api/open-api/cloud-phone/paths/~1cloudphone~1brand~1models/post
                    interface.
                modelId:
                  type: number
                  description: >-
                    device model id,You can query via the
                    https://guide.morelogin.com/api-reference/open-api/open-api/cloud-phone/paths/~1cloudphone~1brand~1models/post
                    interface.
                proxyId:
                  type: integer
                  format: int64
                  description: Proxy ID
              required:
                - skuId
                - quantity
              example:
                skuId: '10002'
                envRemark: Remark added at creation
                groupId: '1565859744475508'
                automaticGeo: false
                automaticLanguage: false
                automaticLocation: false
                country: au
                timezone: Australia/Currie
                language: de-AT
                altitude: 1980
                latitude: 83.73
                longitude: 106.49
                proxyId: 1634660919386770
                quantity: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                    nullable: true
                  data:
                    type: array
                    items:
                      type: string
                    description: This is Cloud phone IDS
                  requestId:
                    type: string
                  error:
                    type: object
                    properties: {}
                required:
                  - code
                  - msg
                  - requestId
  /cloudphone/powerOn:
    post:
      summary: Start Cloud Phone
      operationId: powerOnUsingPOST
      tags:
        - Cloud Phone Management
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  format: int64
                disableMoneySavingMode:
                  type: boolean
                  description: Disable power saving mode, default:false
              required:
                - id
            example:
              id: 1637226321190925
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Return result code 0:Normal Other codes are exceptions.
                  msg:
                    type: string
                    description: Error message
                  requestId:
                    type: string
                    description: Operation Request ID
                required:
                  - code
                  - msg
                  - requestId
  /cloudphone/powerOff:
    post:
      summary: Stop Cloud Phone
      operationId: powerOffUsingPOST
      tags:
        - Cloud Phone Management
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  format: int64
              required:
                - id
            example:
              id: 1596527092376632
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Return result code 0:Normal Other codes are exceptions.
                  msg:
                    type: string
                    description: Error message
                  requestId:
                    type: string
                    description: Operation Request ID
                required:
                  - code
                  - msg
                  - requestId
  /cloudphone/edit/batch:
    post:
      summary: Update Cloud Phone Profile
      operationId: editBatchUsingPOST
      tags:
        - Cloud Phone Management
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: array
                  items:
                    type: integer
                    format: int64
                  description: Cloud phone IDs
                envName:
                  type: string
                  maxLength: 64
                  minLength: 1
                  description: Cloud phone name (≤64 chars)
                phoneNumber:
                  type: string
                  description: >-
                    Customize your phone number. Format requirements:Must begin
                    with a + sign, country code must be 1-3 digits (excluding
                    86), total length 8-14 digits, and contain only + and
                    numbers.
                powerOnBillingStrategy:
                  type: integer
                  format: int64
                  description: >-
                    Non-Monthly cloud phone billing method (0:default,
                    1:parallel pack only)
                proxyId:
                  type: integer
                  format: int64
                  description: Proxy ID
                groupId:
                  type: integer
                  format: int64
                  description: Environment group ID
                tagIds:
                  type: array
                  items:
                    type: integer
                    format: int64
                  description: Environment tag IDs
                tagOps:
                  type: string
                  enum:
                    - ADD
                    - UPDATE
                    - CLEAR
                  description: Tag operation
                envRemark:
                  type: string
                  maxLength: 1500
                  description: Environment remark (≤1500 chars, line breaks supported)
                automaticGeo:
                  type: boolean
                  description: Auto geolocation
                automaticLanguage:
                  type: boolean
                  description: Auto language
                automaticLocation:
                  type: boolean
                  description: Auto location (timezone & country)
                country:
                  type: string
                  description: Country
                timezone:
                  type: string
                  description: Timezone
                language:
                  type: string
                  description: Language
                altitude:
                  type: number
                  description: Altitude
                latitude:
                  type: number
                  description: Latitude
                longitude:
                  type: number
                  description: Longitude
                enableRoot:
                  type: boolean
                  description: Enable global ROOT
              required:
                - id
            example:
              id:
                - 1637238770951311
              proxyId: 0
              automaticGeo: false
              automaticLanguage: false
              automaticLocation: false
              country: bo
              timezone: America/La_Paz
              language: de-CH
              latitude: 0
              longitude: 0
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Return result code:0,Normal Other codes are exceptions.
                  msg:
                    type: string
                    description: Error message
                  requestId:
                    type: string
                    description: Operation Request ID
                required:
                  - code
                  - msg
                  - requestId
  /cloudphone/setProxy:
    post:
      tags:
        - Cloud Phone Management
      summary: Set cloud phone proxy
      description: >-
        Set proxy settings for one or more cloud phones. Supports binding
        proxyId directly, or adding/modifying detailed proxy parameters. The
        request payload format is identical to browser proxy configuration, and
        settings are synchronized to channel providers in real-time.
      operationId: setProxy
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudPhoneSetProxyApiDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 'Response code: 0 = success, >0 = error'
                  data:
                    type: object
                    description: Empty response data
                    example: {}
                  msg:
                    type: string
                    description: Message; populated if code > 0
  /cloudphone/delete/batch:
    post:
      summary: Delete Cloud Phone
      operationId: deleteUsingPOST
      tags:
        - Cloud Phone Management
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                ids:
                  type: array
                  items:
                    type: string
              required:
                - ids
            example:
              ids:
                - '1595755686723985'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Return result code 0:Normal Other codes are exceptions.
                  msg:
                    type: string
                    description: Error message
                  requestId:
                    type: string
                    description: Operation Request ID
                required:
                  - code
                  - msg
                  - requestId
  /cloudphone/newMachine:
    post:
      summary: One-click new machine
      operationId: oneNewUsingPOST
      tags:
        - Cloud Phone Management
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  format: int64
                  description: Cloud phone ID
                brand:
                  type: string
                  description: Brand
                modelId:
                  type: integer
                  description: Model ID
            example:
              id: 1595372958075305
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code:0 indicates success, >0 indicates failure
                  msg:
                    type: string
                required:
                  - code
                  - msg
  /cloudphone/info:
    post:
      summary: Get Cloud Phone Details
      operationId: infoUsingPOST
      tags:
        - Cloud Phone Management
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  format: int64
                  description: Cloud phone ID
              required:
                - id
            example:
              id: 1672532391231745
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    nullable: true
                    example: null
                  data:
                    $ref: '#/components/schemas/CloudPhoneDetail'
                  requestId:
                    type: string
                    example: 4d0f4fa68613441e9a11446a6437bb5a
                required:
                  - code
                  - msg
                  - data
                  - requestId
  /cloudphone/queryByAndroidId:
    post:
      summary: Get Cloud Phone Details By AndroidId
      description: >-
        Query the cloud phone ID associated with a specific androidId under the
        current team. Returns the single cloud phone ID if found.
      operationId: queryByAndroidId
      tags:
        - Cloud Phone Management
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                androidId:
                  type: string
                  description: The androidId of the cloud phone
                  example: 8f7e6d5c4b3a2f1e
              required:
                - androidId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    example: 0
                  msg:
                    type: string
                    nullable: true
                    example: null
                  data:
                    $ref: '#/components/schemas/CloudPhoneDetail'
                  requestId:
                    type: string
                    example: 4d0f4fa68613441e9a11446a6437bb5a
                required:
                  - code
                  - msg
                  - data
                  - requestId
  /cloudphone/enableRoot:
    post:
      tags:
        - Cloud Phone Management
      summary: Enable or disable global ROOT
      description: >-
        Enable or disable the global system-level ROOT permission on a single
        cloud phone.
      operationId: enableRoot
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudPhoneEnableRootApiDTO'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 'Response code: 0 = success, >0 = error'
                  data:
                    type: object
                    description: Empty response data
                    example: {}
                  msg:
                    type: string
                    description: Message; populated if code > 0
  /cloudphone/screenCap:
    post:
      tags:
        - Cloud Phone Management
      summary: Cloud phone screen capture
      description: >-
        Get the real-time screen capture of the specified cloud phone instance.
        Supports returning a temporary signed URL with an expiration timestamp.
      operationId: screenCap
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - id
              properties:
                id:
                  type: integer
                  format: int64
                  description: cloud phone ID
                  example: 1558968155668507
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 'Response code: 0 = success, >0 = error'
                  data:
                    type: object
                    properties:
                      url:
                        type: string
                        description: The screenshot access URL
                        example: http://oss.morelogin.com/test.png
                      status:
                        type: string
                        description: >-
                          Status representing immediate completion or pending
                          status
                        example: finish
                      expireAt:
                        type: integer
                        format: int64
                        description: >-
                          URL expiration timestamp in milliseconds (only for ARM
                          cloud provider)
                        example: 1756024767163
                      success:
                        type: boolean
                        description: Was successfully generated
                        example: true
                  msg:
                    type: string
                    description: Message; populated if code > 0
  /cloudphone/screenCapBase64:
    post:
      tags:
        - Cloud Phone Management
      summary: Cloud phone screen capture (response base64)
      description: >-
        Get the real-time screen capture of the specified cloud phone instance.
        Currently, only Android 12 and Android 15 are supported.
      operationId: screenCapBase64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - id
              properties:
                id:
                  type: integer
                  format: int64
                  description: cloud phone ID
                  example: 1558968155668507
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 'Response code: 0 = success, >0 = error'
                  data:
                    type: object
                    properties:
                      captureBase64:
                        type: string
                        description: Base64-encoded image
                        example: data:image/png;base64,/9j/4AAQSkZJRgABAQAA.....
                      errorMessage:
                        type: string
                        description: error message
                        example: success
                      success:
                        type: boolean
                        description: Was successfully generated
                        example: true
                  msg:
                    type: string
                    description: Message; populated if code > 0
  /cloudphone/brand/models:
    post:
      summary: List Device Brands & Models
      description: Query available brand & model list for given Android version
      tags:
        - Cloud Phone Management
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                skuId:
                  type: integer
                  description: Cloud phone product ID
              required:
                - skuId
            example:
              skuId: 0
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  requestId:
                    type: string
                  timestamp:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        brand:
                          type: string
                        model:
                          type: string
  /cloudphone/updateAdb:
    post:
      summary: Update ADB Connection Status
      operationId: updateAdbUsingPOST
      tags:
        - ADB
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                enableAdb:
                  type: boolean
                ids:
                  type: array
                  items:
                    type: integer
                    format: int64
              required:
                - enableAdb
                - ids
            example:
              enableAdb: true
              ids:
                - 1633612946805630
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Return result code 0:Normal Other codes are exceptions.
                  msg:
                    type: string
                    description: Error message
                  requestId:
                    type: string
                    description: Operation Request ID
                required:
                  - code
                  - msg
                  - requestId
  /cloudphone/batchAdbInfo:
    post:
      tags:
        - ADB
      summary: Batch Query ADB Info
      description: >
        Batch query cloud phone ADB connection info.

        - The envIds list supports a maximum of 200 items

        - Supports mixed queries across wuin and arm providers; the API
        internally groups by provider and merges results

        - ADB info is only available when the phone is powered on (envStatus >=
        4); it cannot be queried when powered off or booting
      operationId: batchAdbInfoOpenApi
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiBatchAdbInfoDto'
            example:
              envIds:
                - 1674380838117474
                - 1675787900043353
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataListApiBatchAdbInfoResultDto'
              example:
                code: 0
                msg: success
                data:
                  - id: 1674380838117474
                    supportAdb: true
                    envStatus: 4
                    adbIp: 192.168.1.100
                    adbPassword: abc12345
                    adbPort: '5555'
                    command: null
                    expireTime: null
                    remark: null
                  - id: 1675787900043353
                    supportAdb: true
                    envStatus: 2
                    adbIp: null
                    adbPassword: null
                    adbPort: null
                    command: null
                    expireTime: null
                    remark: Environment is not powered on, unable to query ADB info
  /cloudphone/exeCommand:
    post:
      summary: Execute ADB Shell Command
      operationId: executeShellCommand
      tags:
        - ADB
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  format: int64
                  description: Cloud phone ID
                command:
                  type: string
                  description: Shell command to execute
              required:
                - id
                - command
            example:
              command: >-
                am start -n
                com.android.chrome/com.google.android.apps.chrome.Main
              id: 1674153897828425
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: 'Response code: 0 indicates success, >0 indicates failure'
                  data:
                    type: string
                    description: Response Information
                  msg:
                    type: string
                    description: >-
                      Response message:An error message will be returned when
                      code is greater than 0
                required:
                  - code
                  - data
                  - msg
  /cloudphone/rpa/template/market/page:
    post:
      summary: List Market Templates
      deprecated: false
      description: Query Schedules market template, template name supports fuzzy query
      tags:
        - Schedules
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                searchKey:
                  type: string
                  description: Template Name
                  nullable: true
                pageNo:
                  type: integer
                  description: Default:1
                  nullable: true
                pageSize:
                  type: integer
                  description: Default:10
                  nullable: true
            example:
              pageNo: 0
              pageSize: 0
              searchWords: ''
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: string
                    description: Error msg
                  requestId:
                    type: string
                    description: Request trace id
                  data:
                    type: object
                    properties:
                      dataList:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                            title:
                              type: string
                              description: Market template title
                            parameter:
                              type: string
                              description: Template parameter JSON string
                            description:
                              type: string
                              description: Market template Description
                            appIconUrls:
                              type: array
                              items:
                                type: string
                            sort:
                              type: integer
                              description: sort
                            author:
                              type: string
                              description: author
                            updateDate:
                              type: string
                              description: Last update time
                          required:
                            - parameter
                      current:
                        type: integer
                        description: Current page number
                      pages:
                        type: integer
                        description: Total pages
                      total:
                        type: integer
                        description: Total count
                    required:
                      - current
                      - dataList
                      - pages
                      - total
                required:
                  - code
                  - msg
                  - data
                  - requestId
              example:
                code: 0
                msg: ''
                data:
                  current: 0
                  dataList:
                    - appIconUrls: []
                      author: ''
                      description: ''
                      parameter: ''
                      id: 0
                      sort: 0
                      title: ''
                      type: 0
                      updateDate: ''
                  pages: 0
                  total: 0
          headers: {}
  /cloudphone/rpa/template/personal/page:
    post:
      summary: List Personal Templates
      deprecated: false
      description: Query Schedules market template, template name supports fuzzy query
      tags:
        - Schedules
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                searchKey:
                  type: string
                  description: Template name
                  nullable: true
                desc:
                  type: string
                  description: Template description
                pageNo:
                  type: integer
                  description: Default:1
                  nullable: true
                pageSize:
                  type: integer
                  description: Default:10
                  nullable: true
            example:
              pageNo: 1
              pageSize: 10
              searchWords: ''
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: string
                    description: Error msg
                  requestId:
                    type: string
                    description: Request trace id
                  data:
                    type: object
                    properties:
                      dataList:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                            title:
                              type: string
                              description: Market template title
                            parameter:
                              type: string
                              description: Template parameter JSON string
                            description:
                              type: string
                              description: Market template Description
                            appIconUrls:
                              type: array
                              items:
                                type: string
                            sort:
                              type: integer
                              description: sort
                            updateDate:
                              type: string
                              description: Last update time
                      current:
                        type: integer
                        description: Current page number
                      pages:
                        type: integer
                        description: Total pages
                      total:
                        type: integer
                        description: Total count
                    required:
                      - current
                      - dataList
                      - pages
                      - total
                required:
                  - code
                  - msg
                  - data
                  - requestId
              example:
                code: 0
                msg: ''
                data:
                  current: 0
                  dataList:
                    - id: 0
                      title: ''
                      appIconUrls: []
                      author: ''
                      description: ''
                      parameter: ''
                      sort: 0
                      updateDate: ''
                  pages: 0
                  total: 0
          headers: {}
  /cloudphone/rpa/task/page:
    post:
      summary: List RPA Schedules
      deprecated: false
      description: ''
      tags:
        - Schedules
      parameters:
        - name: enabled
          in: query
          description: Is the plan enabled
          required: false
          example: 'false'
          schema:
            type: boolean
            nullable: true
        - name: mainTaskName
          in: query
          description: plan name
          required: false
          schema:
            type: string
            maxLength: 150
            minLength: 1
            nullable: true
        - name: taskState
          in: query
          description: >-
            Plan status; 0:awaiting execution; 1:Executing; 2:Execution
            completed 3:Cancel
          required: false
          schema:
            type: integer
            maximum: 3
            nullable: true
        - name: templateTitle
          in: query
          description: Template Title
          required: false
          schema:
            type: string
            maxLength: 150
            minLength: 0
            nullable: true
        - name: pageNo
          in: query
          description: default:1
          required: false
          schema:
            type: string
        - name: pageSize
          in: query
          description: default:20
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                enabled:
                  type: boolean
                  description: Is the plan enabled
                  nullable: true
                taskName:
                  type: string
                  description: Plan name
                  nullable: true
                templateTitle:
                  type: string
                  description: Template title
                  nullable: true
                taskState:
                  type: integer
                  description: >
                    Schedule status; 0:awaiting execution; 1:Executing;
                    2:Execution completed 3:Cancel
                  nullable: true
                pageNo:
                  type: integer
                  description: default:1
                  nullable: true
                pageSize:
                  type: integer
                  description: default:10
                  nullable: true
            example: |-
              {
                  "pageNo": 1,
                  "pageSize": 10,
              }
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: string
                    description: Error msg
                  requestId:
                    type: string
                    description: Request trace id
                  data:
                    type: object
                    properties:
                      dataList:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: Schedule id
                            taskName:
                              type: string
                              description: Schedule Task name
                            createMember:
                              type: string
                              description: Member name
                            enabled:
                              type: boolean
                              description: Whether enabled
                            endTime:
                              type: string
                              description: Task end time
                            failCount:
                              type: integer
                              description: Number of failed executions
                            handleTime:
                              type: string
                              description: Execution start time
                            notes:
                              type: string
                              description: schedule notes
                            scheduleConfig:
                              type: string
                              description: Task schedule configuration
                            successCount:
                              type: integer
                              description: Number of successful executions
                            taskPreviewTimeTable:
                              type: array
                              items:
                                type: object
                                properties:
                                  cloudPhoneId:
                                    type: integer
                                    description: Cloud phone ID
                                  cloudPhoneName:
                                    type: string
                                    description: Cloud phone name
                                  times:
                                    type: array
                                    items:
                                      type: string
                                    description: List of execution times
                            taskState:
                              type: integer
                              description: >-
                                Schedule Task state. 0:waiting; 1:running;
                                2:completed 3:Cancel
                            templateId:
                              type: integer
                              description: Template id
                            templateTitle:
                              type: string
                              description: Template title
                          required:
                            - createMember
                        description: Plan list
                      current:
                        type: integer
                        description: Current page number
                      pages:
                        type: integer
                        description: Total pages
                      total:
                        type: integer
                        description: Total count
                    required:
                      - current
                      - dataList
                      - pages
                      - total
                required:
                  - code
                  - data
                  - msg
                  - requestId
              example:
                code: 0
                data:
                  current: 0
                  dataList:
                    - createMember: ''
                      enabled: true
                      endTime: ''
                      failCount: 0
                      handleTime: ''
                      id: 0
                      notes: ''
                      scheduleConfig: ''
                      successCount: 0
                      taskName: ''
                      taskPreviewTimeTable:
                        - billingType: 0
                          cloudPhoneId: 0
                          cloudPhoneName: ''
                          times:
                            - ''
                      taskState: 0
                      templateId: 0
                      templateTitle: ''
                  pages: 0
                  total: 0
                msg: ''
          headers: {}
  /cloudphone/rpa/task/save:
    post:
      summary: Creating a schedule
      deprecated: false
      description: >
        Save cloud phone scheduled task.


        templateParameter Parameter Specification
         1. __Parameter Source__
        Parameter keys must be extracted from the `parameter` field returned by
        the following APIs:

        - Get market template pages

        - Get Personal template pages

        2.  __Data Structure__

        - Submit parameters in JSON object format: `{"key1": "value1", "key2":
        "value2"}`

        - Final parameter values must be deserialized according to business
        logic before use

        3. __Common Type Parameters__

        For the following parameter types, pass values directly in the
        corresponding format:

        - string: `{"name": "John"}`

        - decimal / number: `{"amount": 100.50}`

        - boolean: `{"enabled": true}`

        4. __Media Type Parameters__

        For media parameters such as image (pic) or video (video), in addition
        to basic information, a fixed key `"__Extra__"` must be included.
        Example format:

        ```json

        {
            "__Extra__": {
                "pic": {
                    "name": "pic_name",
                    "size": 204800
                },
                "video": {
                    "name": "video_name",
                    "size": 204800000
                }
            },
            "pic": "https://get.morelogin.com/prod/cloudPhoneTaskVideo/1556061681934880/1c62314c7e2b4d298abe8d5452d7c050/test.png",
            "video": "https://get.morelogin.com/pre/cloudPhoneTaskVideo/1542431036481556/4c4fed83685345ae8f1505fbe0c2f123/baby.mp4"
        }

        ```

        5. __Parameter Configuration Example__

        The following example demonstrates how to configure the
        `templateParameter` parameter when saving a plan using a market
        template:

        - __Step 1: Retrieve Template Parameters__

        Call the Market Template API:

        `GET /api/cloudphone/rpa/template/market/page`

        Extract the `parameter` field from the response, for example:


        ```json

        "parameter":
        "{\"videoDownloadUrl\":{\"type\":\"video\",\"extra\":{\"name\":\"Select
        Video\",\"type\":\"video\",\"required\":true,\"defaultValue\":{\"enabled\":false},\"index\":1,\"sizeLimit\":{\"value\":200,\"unit\":\"MB\"},\"formatType\":[\"mp4\",\"mov\"]}},\"videoDescription\":{\"type\":\"string\",\"extra\":{\"name\":\"Video
        Caption\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":1000},\"multiline\":{\"enabled\":true,\"value\":3},\"defaultValue\":{\"enabled\":false},\"index\":2}},\"coverUrl\":{\"type\":\"image\",\"extra\":{\"name\":\"Cover
        Image\",\"type\":\"image\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":3,\"sizeLimit\":{\"value\":5,\"unit\":\"MB\"},\"formatType\":[\"jpg\",\"png\",\"jpeg\"]}},\"enableAIGC\":{\"type\":\"boolean\",\"extra\":{\"name\":\"AI
        Label\",\"type\":\"boolean\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":4}},\"productId\":{\"type\":\"string\",\"extra\":{\"name\":\"Product
        ID\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":50},\"placeholder\":\"Product
        ID only supports digits, with a maximum of 50
        characters.\",\"defaultValue\":{\"enabled\":false},\"index\":5}},\"productTitle\":{\"type\":\"string\",\"extra\":{\"name\":\"Product
        Title\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":30},\"defaultValue\":{\"enabled\":false},\"index\":6}},\"getLeads\":{\"type\":\"boolean\",\"extra\":{\"name\":\"Get
        Leads\",\"type\":\"boolean\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":7}},\"comment\":{\"type\":\"string\",\"extra\":{\"name\":\"Comment\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":200},\"multiline\":{\"enabled\":true,\"value\":3},\"defaultValue\":{\"enabled\":false},\"index\":8}}}"

        ```


        - __Step 2: Build the Parameter JSON__

        Construct the JSON object according to the parameter requirements:

        ```json

        {
          "__Extra__": {
            "videoDownloadUrl": {
              "name": "video_name.mp4",
              "size": 204800000
            }
          },
          "videoDownloadUrl": "https://get.morelogin.com/pre/cloudPhoneTaskVideo/1542431036481556/4c4fed83685345ae8f1505fbe0c2f123/baby.mp4"
        }

        ```

        - __Step 3: Escape the JSON String__

        Convert the JSON object into an escaped string format:

        ```json

        "{\"__Extra__\": {\"videoDownloadUrl\": {\"name\":
        \"video_name.mp4\",\"size\": 204800000}},\"videoDownloadUrl\":
        \"https://get.morelogin.com/pre/cloudPhoneTaskVideo/1542431036481556/4c4fed83685345ae8f1505fbe0c2f123/baby.mp4\"}"

        ```

        - __Step 4: API Call__

        Pass the escaped string as the value of the `templateParameter`
        parameter to the target API.
      tags:
        - Schedules
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                taskName:
                  type: string
                  description: Task name
                templateId:
                  type: integer
                  description: Template ID
                templateType:
                  type: string
                  description: Template type. PERSONAL:personal; MARKET:marketplace
                taskType:
                  type: string
                  description: Task type. TEMPORARY or SCHEDULED
                notes:
                  type: string
                  description: Plan notes
                cloudPhoneConfigs:
                  type: array
                  items:
                    type: object
                    properties:
                      cloudPhoneId:
                        type: integer
                        description: Cloud phone ID
                      triggerTime:
                        type: string
                        description: Task execution time, UTC+0 time zone
                      templateParameter:
                        type: string
                        description: >-
                          Template parameters are defined in personal templates
                          or market templates. The parameters in the template
                          are defined
                          as:{"Test":{"extra":{"type":"string","required":true,"multiline":{"enabled":false},"name":"Test","index":1},"type":"string"}}
                          When requesting parameters, the parameter passed
                          is:{"Test":"xxxx"}
                    required:
                      - cloudPhoneId
                      - triggerTime
                      - templateParameter
                  description: Collection of cloud phone schedule configurations
                scheduleConfig:
                  type: object
                  properties:
                    endTime:
                      type: string
                      description: date-time
                    scheduleType:
                      type: string
                      description: Schedule type. ONCE:one-time; DAILY:daily
                  required:
                    - endTime
                    - scheduleType
                  description: Task schedule configuration
              required:
                - cloudPhoneConfigs
                - scheduleConfig
                - taskName
                - taskType
                - templateId
                - templateType
            example:
              cloudPhoneConfigs:
                - cloudPhoneId: 1678331966138097
                  templateParameter: '{"keyword": "abc"}'
                  triggerTime: '2025-12-29 23:00:00'
              notes: notes test
              scheduleConfig:
                endTime: '2025-12-30 00:00:00'
                scheduleType: ONCE
              taskName: test
              templateId: 1678347487160296
              templateType: PERSONAL
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: string
                    description: Error msg
                  requestId:
                    type: string
                    description: Request trace id
                  data:
                    type: integer
                    description: Schedules id
                required:
                  - code
                  - data
                  - msg
                  - requestId
              example:
                code: 0
                data: 0
                msg: ''
          headers: {}
  /cloudphone/rpa/onceTask/save:
    post:
      summary: Create One-Time RPA Schedule
      deprecated: false
      description: >
        Save cloud phone once scheduled task


        templateParameter Parameter Specification
         1. __Parameter Source__
        Parameter keys must be extracted from the `parameter` field returned by
        the following APIs:

        - Get market template pages

        - Get Personal template pages

        2.  __Data Structure__

        - Submit parameters in JSON object format: `{"key1": "value1", "key2":
        "value2"}`

        - Final parameter values must be deserialized according to business
        logic before use

        3. __Common Type Parameters__

        For the following parameter types, pass values directly in the
        corresponding format:

        - string: `{"name": "John"}`

        - decimal / number: `{"amount": 100.50}`

        - boolean: `{"enabled": true}`

        4. __Media Type Parameters__

        For media parameters such as image (pic) or video (video), in addition
        to basic information, a fixed key `"__Extra__"` must be included.
        Example format:

        ```json

        {
            "__Extra__": {
                "pic": {
                    "name": "pic_name",
                    "size": 204800
                },
                "video": {
                    "name": "video_name",
                    "size": 204800000
                }
            },
            "pic": "https://get.morelogin.com/prod/cloudPhoneTaskVideo/1556061681934880/1c62314c7e2b4d298abe8d5452d7c050/test.png",
            "video": "morelogin://cloudfile?ids=1,2"
        }

        ```

        For files already uploaded to MoreLogin Cloud Storage, use the cloud
        file protocol as the media or file parameter value:
        `morelogin://cloudfile?ids=1,2`. The `ids` value is a comma-separated
        list of Cloud Storage file IDs.

        5. __Parameter Configuration Example__

        The following example demonstrates how to configure the
        `templateParameter` parameter when saving a plan using a market
        template:

        - __Step 1: Retrieve Template Parameters__

        Call the Market Template API:

        `POST /cloudphone/rpa/template/market/page`

        Extract the `parameter` field from the response, for example:


        ```json

        "parameter":
        "{\"videoDownloadUrl\":{\"type\":\"video\",\"extra\":{\"name\":\"Select
        Video\",\"type\":\"video\",\"required\":true,\"defaultValue\":{\"enabled\":false},\"index\":1,\"sizeLimit\":{\"value\":200,\"unit\":\"MB\"},\"formatType\":[\"mp4\",\"mov\"]}},\"videoDescription\":{\"type\":\"string\",\"extra\":{\"name\":\"Video
        Caption\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":1000},\"multiline\":{\"enabled\":true,\"value\":3},\"defaultValue\":{\"enabled\":false},\"index\":2}},\"coverUrl\":{\"type\":\"image\",\"extra\":{\"name\":\"Cover
        Image\",\"type\":\"image\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":3,\"sizeLimit\":{\"value\":5,\"unit\":\"MB\"},\"formatType\":[\"jpg\",\"png\",\"jpeg\"]}},\"enableAIGC\":{\"type\":\"boolean\",\"extra\":{\"name\":\"AI
        Label\",\"type\":\"boolean\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":4}},\"productId\":{\"type\":\"string\",\"extra\":{\"name\":\"Product
        ID\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":50},\"placeholder\":\"Product
        ID only supports digits, with a maximum of 50
        characters.\",\"defaultValue\":{\"enabled\":false},\"index\":5}},\"productTitle\":{\"type\":\"string\",\"extra\":{\"name\":\"Product
        Title\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":30},\"defaultValue\":{\"enabled\":false},\"index\":6}},\"getLeads\":{\"type\":\"boolean\",\"extra\":{\"name\":\"Get
        Leads\",\"type\":\"boolean\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":7}},\"comment\":{\"type\":\"string\",\"extra\":{\"name\":\"Comment\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":200},\"multiline\":{\"enabled\":true,\"value\":3},\"defaultValue\":{\"enabled\":false},\"index\":8}}}"

        ```


        - __Step 2: Build the Parameter JSON__

        Construct the JSON object according to the parameter requirements:

        ```json

        {
          "__Extra__": {
            "videoDownloadUrl": {
              "name": "video_name.mp4",
              "size": 204800000
            }
          },
          "videoDownloadUrl": "morelogin://cloudfile?ids=1,2"
        }

        ```

        - __Step 3: Escape the JSON String__

        Convert the JSON object into an escaped string format:

        ```json

        "{\"__Extra__\": {\"videoDownloadUrl\": {\"name\":
        \"video_name.mp4\",\"size\": 204800000}},\"videoDownloadUrl\":
        \"morelogin://cloudfile?ids=1,2\"}"

        ```

        - __Step 4: API Call__

        Pass the escaped string as the value of the `templateParameter`
        parameter to the target API.
      tags:
        - Schedules
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                cloudPhoneId:
                  type: integer
                  description: Cloud phone ID
                  required: true
                scheduleName:
                  type: string
                  description: Schedule name
                  required: true
                templateId:
                  type: integer
                  description: Template ID,  Personal template or market template ID
                  required: true
                templateParameter:
                  type: string
                  description: >-
                    Template parameters are defined in personal templates or
                    market templates. The parameters in the template are defined
                    as:{"Test":{"extra":{"type":"string","required":true,"multiline":{"enabled":false},"name":"Test","index":1},"type":"string"}}
                    When requesting parameters, the parameter passed
                    is:{"Test":"xxxx"}
                description:
                  type: string
                  description: Schedule description
              required:
                - cloudPhoneId
                - scheduleName
                - templateId
            example:
              cloudPhoneId: 16783319661123
              scheduleName: test
              templateId: 1678347487160256
              templateParameter: '{"keyword": "abc"}'
              description: schedule description
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: string
                    description: Error msg
                  requestId:
                    type: string
                    description: Request trace id
                  data:
                    type: integer
                    description: Schedules id
                required:
                  - code
                  - data
                  - msg
                  - requestId
              example:
                code: 0
                data: 0
                msg: ''
          headers: {}
  /cloudphone/rpa/task/cancel:
    post:
      summary: Cancel RPA Schedule
      deprecated: false
      description: ''
      tags:
        - Schedules
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: Plan id
              required:
                - id
            example:
              id: 1678919049331329
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: string
                    description: Error msg
                  requestId:
                    type: string
                    description: Request trace id
                required:
                  - code
                  - data
                  - msg
                  - requestId
              example:
                code: 0
                data: null
                msg: ''
          headers: {}
  /cloudphone/rpa/subTask/page:
    post:
      summary: List Task Execution Records
      deprecated: false
      description: Query Schedules market template, template name supports fuzzy query
      tags:
        - Schedules
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                taskId:
                  type: integer
                  description: Task id
                  nullable: true
                taskName:
                  type: string
                  description: Task name
                  maxLength: 255
                  minLength: 1
                  nullable: true
                taskState:
                  type: integer
                  description: >-
                    Plan status; 0:awaiting execution; 1:Executing; 2:Execution
                    completed 3:Cancel
                  maximum: 9
                  minimum: 0
                  nullable: true
                templateId:
                  type: integer
                  description: Template id
                  maximum: 99999999999
                  minimum: 0
                  nullable: true
                templateTitle:
                  type: string
                  description: Template title
                  maxLength: 255
                  minLength: 0
                  nullable: true
                cloudPhoneId:
                  type: integer
                  description: cloud phone id
                  nullable: true
                  example: 1559133625483282
                cloudPhoneName:
                  type: string
                  description: Cloud phone name
                  maxLength: 100
                  minLength: 0
                  nullable: true
                beginTime:
                  type: string
                  description: Task start time UTC+0 time zone
                  nullable: true
                  example: '2025-01-01 23:59:59'
                endTime:
                  type: string
                  description: |
                    Task end time UTC+0 time zone
                  nullable: true
                  example: '2025-01-02 23:59:59'
                pageNo:
                  type: integer
                  description: Default:1
                  nullable: true
                  example: 1
                pageSize:
                  type: integer
                  description: Default:10
                  nullable: true
            example:
              pageNo: 1
              pageSize: 10
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: string
                    description: Error msg
                  requestId:
                    type: string
                    description: Request trace id
                  data:
                    type: object
                    properties:
                      dataList:
                        type: array
                        items:
                          $ref: '#/components/schemas/Execution DTO'
                      current:
                        type: integer
                        description: Current page number
                      pages:
                        type: integer
                        description: Total pages
                      total:
                        type: integer
                        description: Total count
                    required:
                      - current
                      - dataList
                      - pages
                      - total
                required:
                  - code
                  - msg
                  - data
                  - requestId
              example:
                code: 0
                msg: ''
                data:
                  current: 0
                  dataList:
                    - appIconUrls: []
                      author: ''
                      description: ''
                      id: 0
                      sort: 0
                      title: ''
                      type: 0
                      updateDate: ''
                  pages: 0
                  total: 0
          headers: {}
  /cloudphone/rpa/subTask/detail/{id}:
    post:
      summary: Get Task Execution Details
      deprecated: false
      description: Query Schedules market template, template name supports fuzzy query
      tags:
        - Schedules
      parameters:
        - name: id
          in: path
          description: Execution task id
          required: true
          example: 1678919049331331
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                taskId:
                  type: integer
                  description: Task id
                  nullable: true
                taskName:
                  type: string
                  description: Task name
                  maxLength: 255
                  minLength: 1
                  nullable: true
                taskState:
                  type: integer
                  description: >-
                    Plan status; 0:awaiting execution; 1:Executing; 2:Execution
                    completed 3:Cancel
                  maximum: 9
                  minimum: 0
                  nullable: true
                templateId:
                  type: integer
                  description: Template id
                  maximum: 99999999999
                  minimum: 0
                  nullable: true
                templateTitle:
                  type: string
                  description: Template title
                  maxLength: 255
                  minLength: 0
                  nullable: true
                cloudPhoneId:
                  type: integer
                  description: cloud phone id
                  nullable: true
                  example: 1559133625483282
                cloudPhoneName:
                  type: string
                  description: Cloud phone name
                  maxLength: 100
                  minLength: 0
                  nullable: true
                beginTime:
                  type: string
                  description: Task start time UTC+0 time zone
                  nullable: true
                  example: '2025-01-01 23:59:59'
                endTime:
                  type: string
                  description: |
                    Task end time UTC+0 time zone
                  nullable: true
                  example: '2025-01-02 23:59:59'
                pageNo:
                  type: integer
                  description: Default:1
                  nullable: true
                  example: 1
                pageSize:
                  type: integer
                  description: Default:10
                  nullable: true
            example: ''
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: string
                    description: Error msg
                  requestId:
                    type: string
                    description: Request trace id
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Execution record id
                      taskName:
                        type: string
                        description: Schedule Task name
                      taskState:
                        type: integer
                        description: >-
                          Schedule status; 0:awaiting execution; 1:Executing;
                          2:Execution completed 3:Cancel
                      cloudPhoneId:
                        type: integer
                        description: Cloud phone ID
                      cloudPhoneName:
                        type: string
                        description: Cloud phone name
                      templateName:
                        type: string
                        description: Template title
                      handleFailCode:
                        type: string
                        description: Task failure code
                      handleFailReason:
                        type: string
                        description: Task failure reason
                      handleResult:
                        type: integer
                        description: Task result. 0:failed; 1:succeeded
                      handleResultAttachment:
                        type: string
                        description: Task execution result attachment
                      handleTime:
                        type: string
                        description: Execution time
                      endTime:
                        type: string
                        description: Task end time
                      powerOnTime:
                        type: string
                        description: Cloud phone power-on time
                      triggerNextTime:
                        type: string
                        description: Next scheduled trigger time
                      triggerTime:
                        type: string
                        description: Scheduled trigger time
                      createDate:
                        type: string
                        description: Creation time
                      createMember:
                        type: string
                        description: Creator
                      updateDate:
                        type: string
                        description: Last update time
                      updateMember:
                        type: string
                        description: Last updater
                required:
                  - code
                  - msg
                  - data
                  - requestId
              example:
                code: 0
                msg: ''
                data:
                  current: 0
                  dataList:
                    - appIconUrls: []
                      author: ''
                      description: ''
                      id: 0
                      sort: 0
                      title: ''
                      type: 0
                      updateDate: ''
                  pages: 0
                  total: 0
          headers: {}
  /cloudphone/rpa/subTask/cancel/{id}:
    post:
      summary: Cancel Task Execution
      deprecated: false
      description: ''
      tags:
        - Schedules
      parameters:
        - name: id
          in: path
          description: ''
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: Plan id
              required:
                - id
            example:
              id: 1678919049331329
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response code, 0 indicates success,>0 indicates failure
                  msg:
                    type: string
                    description: Error msg
                  requestId:
                    type: string
                    description: Request trace id
                required:
                  - code
                  - data
                  - msg
                  - requestId
              example:
                code: 0
                data: null
                msg: ''
          headers: {}
  /cloudphone/touch/click:
    post:
      tags:
        - Touch
      summary: Touch - Click
      description: >
        Simulate a single tap on the cloud phone screen at the specified
        coordinates.

        The coordinate system uses the top-left corner of the screen as the
        origin `(0, 0)`, with the X-axis extending to the right and the Y-axis
        extending downward.
      operationId: touchClick
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TouchClickRequest'
            example:
              id: 1558968155668507
              pos:
                - 540
                - 960
      responses:
        '200':
          description: Operation successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TouchResultResponse'
              example:
                code: 0
                msg: success
                data:
                  status: finish
  /cloudphone/touch/doubleClick:
    post:
      tags:
        - Touch
      summary: Touch - Double Click
      description: >
        Simulate a double tap on the cloud phone screen at the specified
        coordinates.

        The coordinate system uses the top-left corner of the screen as the
        origin `(0, 0)`, with the X-axis extending to the right and the Y-axis
        extending downward.
      operationId: touchDoubleClick
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TouchClickRequest'
            example:
              id: 1558968155668507
              pos:
                - 540
                - 960
      responses:
        '200':
          description: Operation successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TouchResultResponse'
              example:
                code: 0
                msg: success
                data:
                  status: finish
  /cloudphone/touch/longClick:
    post:
      tags:
        - Touch
      summary: Touch - Long Press
      description: >
        Simulate a long press on the cloud phone screen at the specified
        coordinates.

        Use the `duration` parameter to customize how long the press is held (in
        milliseconds). If omitted, the default duration is used.

        The coordinate system uses the top-left corner of the screen as the
        origin `(0, 0)`, with the X-axis extending to the right and the Y-axis
        extending downward.
      operationId: touchLongClick
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TouchClickRequest'
            example:
              id: 1558968155668507
              pos:
                - 540
                - 960
              duration: 2000
      responses:
        '200':
          description: Operation successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TouchResultResponse'
              example:
                code: 0
                msg: success
                data:
                  status: finish
  /cloudphone/touch/swipe:
    post:
      tags:
        - Touch
      summary: Touch - Swipe
      description: >
        Simulate a finger swipe from the start coordinates to the end
        coordinates.

        Use the `duration` parameter to control the swipe speed (in
        milliseconds). A larger value results in a slower swipe.

        The coordinate system uses the top-left corner of the screen as the
        origin `(0, 0)`, with the X-axis extending to the right and the Y-axis
        extending downward.
      operationId: touchSwipe
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TouchSwipeRequest'
            example:
              id: 1558968155668507
              pos1:
                - 540
                - 1500
              pos2:
                - 540
                - 500
              duration: 300
      responses:
        '200':
          description: Operation successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TouchResultResponse'
              example:
                code: 0
                msg: success
                data:
                  status: finish
  /cloudphone/touch/drag:
    post:
      tags:
        - Touch
      summary: Touch - Drag
      description: >
        Simulate a finger drag from the start coordinates to the end
        coordinates. Similar to swipe, but drag is typically used for dragging
        icons, UI elements, etc.

        Use the `duration` parameter to control the drag speed (in
        milliseconds). A larger value results in a slower drag.

        The coordinate system uses the top-left corner of the screen as the
        origin `(0, 0)`, with the X-axis extending to the right and the Y-axis
        extending downward.
      operationId: touchDrag
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TouchSwipeRequest'
            example:
              id: 1558968155668507
              pos1:
                - 200
                - 500
              pos2:
                - 800
                - 500
              duration: 500
      responses:
        '200':
          description: Operation successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TouchResultResponse'
              example:
                code: 0
                msg: success
                data:
                  status: finish
webhooks: {}
components:
  schemas:
    ResponseDataPageResultCloudPhoneAppDto:
      type: object
      properties:
        code:
          type: integer
          description: Status code, 0 means success
          example: 0
        msg:
          type: string
          description: Description message
          example: Success
        data:
          description: Response data
          $ref: '#/components/schemas/PageResultCloudPhoneAppDto'
    PageResultCloudPhoneAppDto:
      type: object
      properties:
        total:
          type: integer
          format: int64
          description: Total number of records
          example: 15
        current:
          type: integer
          format: int64
          description: Current page number
          example: 1
        pages:
          type: integer
          format: int64
          description: Total number of pages
          example: 2
        dataList:
          type: array
          items:
            $ref: '#/components/schemas/CloudPhoneAppDto'
          description: List of team applications
    CloudPhoneAppDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: Record ID
          example: 123456
        appName:
          type: string
          description: Application name
          example: Facebook
        packageName:
          type: string
          description: Android package name
          example: com.facebook.katana
        versionName:
          type: string
          description: Version display name
          example: 450.0.0.1
        versionCode:
          type: string
          description: Version code
          example: '450000000'
        enabled:
          type: boolean
          description: Whether the application is enabled
          example: true
        desc:
          type: string
          description: Application description
          example: Social media application
        enableRoot:
          type: boolean
          description: Whether ROOT access is enabled for the application
          example: false
    ApiAppRootOperateDto:
      type: object
      required:
        - id
        - packageNames
      properties:
        id:
          type: integer
          format: int64
          description: Cloud Phone ID
          example: 12345678
        packageNames:
          type: array
          items:
            type: string
          description: List of application package names to allow ROOT access
          example:
            - com.test
    CloudPhoneSetProxyApiDto:
      type: object
      properties:
        ids:
          type: array
          items:
            type: integer
            format: int64
          description: List of cloud phone environment IDs
          example:
            - 1558968155668507
        uniqueIds:
          type: array
          items:
            type: integer
          description: >-
            List of display sequence IDs of cloud phone environments (used as
            reference mapping if envIds are not provided)
          example:
            - 1001
        proxy:
          description: Proxy settings
          $ref: '#/components/schemas/CloudPhoneProxyDto'
    CloudPhoneProxyDto:
      type: object
      required:
        - proxyIp
        - proxyPort
        - proxyType
      properties:
        proxyId:
          type: integer
          format: int64
          description: >-
            Proxy Configuration ID (If this value is greater than 0, it means
            reusing an existing proxy configuration; if empty or <=0, it
            represents using the subsequent detailed parameters to create/update
            proxy details)
          example: 10002
        proxyIp:
          type: string
          description: Proxy server IP address
          example: 192.168.1.100
        proxyPort:
          type: integer
          description: Proxy server port
          minimum: 1
          maximum: 65535
          example: 8080
        proxyName:
          type: string
          maxLength: 600
          description: Proxy configuration name/description
          example: test_proxy_01
        proxyProvider:
          type: integer
          description: Proxy provider 0:http, 1:https, 2:socks5
          example: 2
        username:
          type: string
          maxLength: 200
          description: Proxy authentication username
          example: admin
        password:
          type: string
          maxLength: 100
          description: Proxy authentication password
          example: pwd123
        refreshUrl:
          type: string
          description: API URL to refresh dynamic proxy IP
          example: http://api.proxy.com/refresh
        country:
          type: string
          description: Country code of the proxy location (e.g. CN, US)
          example: US
        state:
          type: string
          description: State/Province of the proxy location
          example: California
        city:
          type: string
          description: City of the proxy location
          example: Los Angeles
    CloudPhoneEnableRootApiDTO:
      type: object
      required:
        - id
        - enableRoot
      properties:
        id:
          type: integer
          format: int64
          description: Cloud Phone ID
          example: 1558968155668507
        enableRoot:
          type: boolean
          description: Whether to enable global system-level ROOT permission
          example: true
    CloudPhoneProfile:
      type: object
      properties:
        abnormalStatus:
          type: integer
          description: >-
            Abnormal status 0-No abnormality 1-Unactivated 2-Out-of-contract
            3-Oversold 4-Deactivated
        adbInfo:
          description: ADB connection information
          $ref: '#/components/schemas/AdbInfo'
        billingType:
          type: integer
          description: 'Billing type: 1 = Pay-per-minute (On-demand), 2 = Monthly'
        createDate:
          description: Creation time
          type: string
          format: date-time
        createMember:
          description: Creator member ID
          type: integer
        createMemberName:
          description: Creator member name
          type: string
        enableAdb:
          description: Whether to enable ADB
          type: boolean
        envName:
          type: string
          description: Cloud Phone Name
        envRemark:
          type: string
          description: Profile Remarks
        envStatus:
          type: integer
          description: |
            Profile Status:
            - 0: New
            - 1: Creation failed
            - 2: Powered off
            - 3: Booting
            - 4: Powered on
            - 5: Resetting
            - 6: Restarting
            - 7: One-click new machine in progress
        expireTime:
          type: integer
          description: expiration time
        groupId:
          description: Group ID
          type: integer
        groupName:
          description: Group name. Null when the cloud phone is ungrouped
          type: string
          nullable: true
        id:
          description: Cloud phone ID
          type: integer
          format: int64
        androidId:
          type: string
          description: cloud phone android id
        gaid:
          type: string
          description: cloud phone gaid
        lastConnectDate:
          description: Last connection time
          type: string
          format: date-time
        lastConnectMemberId:
          description: Last connected member ID
          type: integer
        lastConnectMemberName:
          description: Last connected member name
          type: string
        lastStartDate:
          description: Last boot time
          type: string
          format: date-time
        lastStartMemberId:
          description: Last boot member ID
          type: integer
        lastStartMemberName:
          description: Last boot member name
          type: string
        proxy:
          description: Proxy settings
          $ref: '#/components/schemas/ProxyInfo'
        proxyStatus:
          type: integer
          description: >-
            Proxy Status:0-Not Detected 1-Detecting 2-Detecting Failed
            3-Detecting Successful
        supportAdb:
          description: 'Whether ADB is supported: 0 = no, 1 = yes'
          type: boolean
        tagInfos:
          description: Tag details. Empty array when no tags are assigned
          type: array
          items:
            type: object
            properties:
              id:
                description: Tag ID
                type: string
              tagName:
                description: Tag name
                type: string
            required:
              - id
              - tagName
        updateDate:
          description: Update time
          type: string
          format: date-time
        updateMember:
          description: Updater member ID
          type: integer
    AdbInfo:
      type: object
      properties:
        adbIp:
          type: string
          description: adb ip
        adbPassword:
          type: string
          description: adb connection password
        adbPort:
          type: string
          description: adb port
        command:
          type: string
          description: ADB SSH tunnel connection command
          nullable: true
        expireTime:
          type: string
          description: ADB connection expiration time
          nullable: true
        remark:
          type: string
          description: Failure Remarks Information
        success:
          type: integer
          description: Successful acquisition 1=Yes 0=No
      required:
        - adbIp
        - adbPassword
        - adbPort
        - remark
        - success
    ProxyInfo:
      type: object
      properties:
        country:
          description: Country
          type: string
        countryCode:
          description: Country code
          type: string
        createDate:
          description: Creation time
          type: string
          format: date-time
        delFlag:
          type: integer
          description: 1 - deleted 2 - not deleted
        expiryTime:
          description: Expiration time
          type: integer
        exportIp:
          description: Outgoing IP address
          type: string
        groupId:
          description: Group ID
          type: integer
        id:
          description: ID
          type: integer
          format: int64
        providerCode:
          description: Provider code
          type: string
        proxyAreaCode:
          description: Proxy location area code
          type: string
        proxyCatagoryType:
          type: integer
          description: >-
            Proxy type:0:site group 1:cloud platform 2:own IP 3:vps 4:virtual
            machine
        proxyCheckStatus:
          type: integer
          description: >-
            Detection status:0:pending detection 1:successful detection
            2:detection failure 3:unknown error
        proxyInfo:
          description: Proxy details string
          type: string
        proxyIp:
          description: Proxy server IP address
          type: string
        proxyName:
          description: Proxy configuration name
          type: string
        proxyPort:
          description: Proxy server port
          type: integer
        proxyRegionCode:
          description: Proxy location region code
          type: string
        proxyStatus:
          type: integer
          description: 0-Normal 1-Pending allocation 2-Upgrading 3-Expired
        proxySub:
          description: Proxy subscription information
          $ref: '#/components/schemas/ProxySubscription'
        proxyType:
          type: integer
          description: >-
            Proxy type:0-http 1-https 2-socks5 4-Oxylabs 5-Proxys.io 6-GeoSurf
            9-Oxylabsauto 10-Trogan 11-Shadowsocks 12-vmess
        proxyTypeCode:
          description: Proxy protocol type code
          type: string
        regionKey:
          description: Cloud platform region key
          type: string
        releaseTime:
          type: string
          format: date-time
          description: Release time:deletion time if deleted, expiration time if expired
        uniqueId:
          description: Display sort sequence ID
          type: integer
      required:
        - country
        - countryCode
        - createDate
        - delFlag
        - expiryTime
        - exportIp
        - groupId
        - id
        - providerCode
        - proxyAreaCode
        - proxyCatagoryType
        - proxyCheckStatus
        - proxyInfo
        - proxyIp
        - proxyName
        - proxyPort
        - proxyRegionCode
        - proxyStatus
        - proxySub
        - proxyType
        - proxyTypeCode
        - regionKey
        - releaseTime
        - uniqueId
    ProxySubscription:
      type: object
      properties:
        activeRecordId:
          description: Active subscription record ID
          type: integer
        businessId:
          description: Proxy service business ID
          type: string
        createMember:
          description: Creator member ID
          type: integer
        endTime:
          description: End time
          type: integer
        id:
          description: Subscription ID
          type: integer
        nextBillingTime:
          description: Next billing/payment time
          type: integer
        startTime:
          description: Start time of validity
          type: integer
        subPayMethod:
          description: Subscription payment method
          type: string
        subStatus:
          type: integer
          description: Subscription Status:0-Pending 1-Subscribed 2-Cancelled
        subType:
          type: integer
          description: Subscription Type:1-Agent 2-Package
        teamId:
          description: Team ID
          type: integer
      required:
        - activeRecordId
        - businessId
        - createMember
        - endTime
        - id
        - nextBillingTime
        - startTime
        - subPayMethod
        - subStatus
        - subType
        - teamId
    TagInfo:
      type: object
      properties:
        id:
          description: ID
          type: integer
        tagIcon:
          description: Tag icon URL
          type: string
        tagName:
          description: Tag name
          type: string
        tagSource:
          type: string
          description: 'Tag Source: ENV profile, PROXY proxy'
        tagType:
          type: string
          description: 'Tag type: TAG tag, GROUP group'
    CloudPhoneDetail:
      type: object
      properties:
        id:
          description: Cloud phone ID
          type: string
        androidId:
          type: string
          description: cloud phone android id
        gaid:
          type: string
          description: cloud phone gaid
        envName:
          description: Environment name
          type: string
        groupId:
          description: Group ID
          type: string
        groupName:
          description: Group name. Null when the cloud phone is ungrouped
          type: string
          nullable: true
        skuId:
          description: Product SKU ID
          type: string
        tagInfos:
          description: Tag details. Empty array when no tags are assigned
          type: array
          items:
            type: object
            properties:
              id:
                description: Tag ID
                type: string
              tagName:
                description: Tag name
                type: string
            required:
              - id
              - tagName
        billingType:
          description: 'Billing type: 1 = Pay-per-minute (On-demand), 2 = Monthly'
          type: integer
        proxyStatus:
          description: >-
            Proxy status: 0 = not detected, 1 = detecting, 2 = detection failed,
            3 = detection successful
          type: integer
        settings:
          description: Advanced fingerprint settings
          type: object
          properties:
            automaticGeo:
              type: boolean
            automaticLocation:
              type: boolean
            automaticLanguage:
              type: boolean
            longitude:
              type: number
              nullable: true
            latitude:
              type: number
              nullable: true
          required:
            - automaticGeo
            - automaticLocation
            - automaticLanguage
            - longitude
            - latitude
        device:
          description: Device hardware information
          type: object
          properties:
            server:
              type: string
              nullable: true
            countryName:
              type: string
            rom:
              type: integer
            wifiBssid:
              type: string
              nullable: true
            bluetoothMac:
              type: string
          required:
            - server
            - countryName
            - rom
            - wifiBssid
            - bluetoothMac
        proxy:
          description: Proxy settings
          type: object
          properties:
            id:
              type: string
            proxyName:
              type: string
            proxyIp:
              type: string
          required:
            - id
            - proxyName
            - proxyIp
        lastStartMemberId:
          description: Last boot member ID
          type: string
        lastStartMemberName:
          description: Last boot member name
          type: string
          nullable: true
        lastStartDate:
          description: Last boot time
          type: string
          format: date-time
        lastConnectMemberId:
          description: Last connected member ID
          type: string
        lastConnectMemberName:
          description: Last connected member name
          type: string
          nullable: true
        lastConnectDate:
          description: Last connection time
          type: string
          format: date-time
        envStatus:
          description: >-
            Environment status: 0 = new, 1 = creation failed, 2 = powered off, 3
            = booting, 4 = powered on, 5 = resetting, 6 = restarting, 7 =
            one-click new machine in progress
          type: integer
        abnormalStatus:
          description: >-
            Abnormal status: 0 = normal, 1 = unactivated, 2 = arrears, 3 =
            oversold, 4 = deactivated
          type: integer
        expireTime:
          description: Expiration time
          type: string
        envRemark:
          description: Environment remark
          type: string
        createMember:
          description: Creator member ID
          type: string
        updateMember:
          description: Updater member ID
          type: string
        updateDate:
          description: Update time
          type: string
          format: date-time
        createDate:
          description: Creation time
          type: string
          format: date-time
        createMemberName:
          description: Creator member name
          type: string
          nullable: true
      required:
        - id
        - envName
        - groupId
        - skuId
        - tagIds
        - billingType
        - proxyStatus
        - settings
        - device
        - proxy
        - lastStartMemberId
        - lastStartMemberName
        - lastStartDate
        - lastConnectMemberId
        - lastConnectMemberName
        - lastConnectDate
        - envStatus
        - abnormalStatus
        - expireTime
        - envRemark
        - createMember
        - updateMember
        - updateDate
        - createDate
        - createMemberName
    ApiBatchAdbInfoDto:
      type: object
      required:
        - envIds
      properties:
        envIds:
          type: array
          description: List of environment IDs, maximum 200
          maxItems: 200
          minItems: 1
          items:
            type: integer
            format: int64
          example:
            - 1674380838117474
            - 1675787900043353
    ApiBatchAdbInfoResultDto:
      type: object
      description: Batch ADB info query result
      properties:
        id:
          type: integer
          format: int64
          description: Environment ID
        supportAdb:
          type: boolean
          description: Whether ADB is supported
        enableAdb:
          type: boolean
          description: Enable ADB 0 = Disabled, 1 = Enabled
        envStatus:
          type: integer
          description: |
            Environment status:
            - 0: New
            - 1: Creation failed
            - 2: Powered off
            - 3: Booting
            - 4: Powered on
            - 5: Resetting
            - 6: Restarting
            - 7: One-click new machine in progress
        adbIp:
          type: string
          description: ADB connection IP address
          nullable: true
        adbPassword:
          type: string
          description: ADB connection password
          nullable: true
        adbPort:
          type: string
          description: ADB connection port
          nullable: true
        command:
          type: string
          description: ADB SSH tunnel connection command
          nullable: true
        expireTime:
          type: string
          description: ADB connection expiration time
          nullable: true
        remark:
          type: string
          description: >
            Remark info. When ADB info cannot be retrieved, the reason is
            provided:

            - Environment does not exist

            - Environment is not powered on, unable to query ADB info

            - This environment does not support ADB

            - Failed to retrieve ADB info
          nullable: true
    ResponseDataListApiBatchAdbInfoResultDto:
      type: object
      properties:
        code:
          type: integer
          description: Response code, 0 indicates success
          example: 0
        msg:
          type: string
          description: Response message
          example: success
        data:
          type: array
          description: ADB info list, in the same order as the requested envIds
          items:
            $ref: '#/components/schemas/ApiBatchAdbInfoResultDto'
    Execution DTO:
      type: object
      properties:
        id:
          type: integer
          description: Execution record id
        taskName:
          type: string
          description: Schedule Task name
        taskState:
          type: integer
          description: >-
            Schedule status; 0:awaiting execution; 1:Executing; 2:Execution
            completed 3:Cancel
        cloudPhoneId:
          type: integer
          description: Cloud phone ID
        cloudPhoneName:
          type: string
          description: Cloud phone name
        templateName:
          type: string
          description: Template title
        handleFailCode:
          type: string
          description: Task failure code
        handleFailReason:
          type: string
          description: Task failure reason
        handleResult:
          type: integer
          description: Task result. 0:failed; 1:succeeded
        handleResultAttachment:
          type: string
          description: Task execution result attachment
        handleTime:
          type: string
          description: Execution time
        endTime:
          type: string
          description: Task end time
        powerOnTime:
          type: string
          description: Cloud phone power-on time
        triggerNextTime:
          type: string
          description: Next scheduled trigger time
        triggerTime:
          type: string
          description: Scheduled trigger time
        createDate:
          type: string
          description: ' Creation time'
        createMember:
          type: string
          description: Creator
        updateDate:
          type: string
          description: Last update time
        updateMember:
          type: string
          description: Last updater
    TouchClickRequest:
      type: object
      required:
        - id
        - pos
      properties:
        id:
          type: integer
          format: int64
          description: Cloud Phone ID
          example: 1558968155668507
        pos:
          type: array
          items:
            type: integer
          minItems: 2
          maxItems: 2
          description: >-
            Tap coordinates [x, y]. The coordinate system uses the top-left
            corner as origin (0, 0).
          example:
            - 540
            - 960
        duration:
          type: integer
          description: >-
            Press duration in milliseconds (used for long press). If omitted,
            the default duration is used.
          example: 2000
    TouchSwipeRequest:
      type: object
      required:
        - id
        - pos1
        - pos2
      properties:
        id:
          type: integer
          format: int64
          description: Cloud Phone ID
          example: 1558968155668507
        pos1:
          type: array
          items:
            type: integer
          minItems: 2
          maxItems: 2
          description: Start coordinates [x, y]
          example:
            - 540
            - 1500
        pos2:
          type: array
          items:
            type: integer
          minItems: 2
          maxItems: 2
          description: End coordinates [x, y]
          example:
            - 540
            - 500
        duration:
          type: integer
          description: >-
            Swipe/drag duration in milliseconds. A larger value results in a
            slower action.
          example: 300
    TouchResultResponse:
      type: object
      properties:
        code:
          type: integer
          description: Status code, 0 means success
          example: 0
        msg:
          type: string
          description: Response message
          example: success
        data:
          type: object
          properties:
            status:
              type: string
              description: Execution status
              example: finish
  responses:
    '402':
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: integer
              message:
                type: string
            required:
              - code
              - message
    '404':
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: integer
              message:
                type: string
            required:
              - code
              - message
  securitySchemes:
    Authorization:
      type: http
      in: header
      name: Authorization
      description: Token for request access token interface response access_token field
      example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxNT....
      scheme: bearer
      bearerFormat: JWT
servers:
  - url: https://api.MoreLogin.com
    description: MoreLogin open api endpoint
security:
  - Authorization: []
